#ifndef COMMON_INTERPROCESSCOMMUNICATION_H
#define COMMON_INTERPROCESSCOMMUNICATION_H
#include "common.h"

#define IPC_RECV_PORT   60002
#define IPC_SEND_PORT   60001

#pragma pack(1)
// 定义消息协议结构体
struct IPCProtocol
{
    u8 Head;            /* 帧头: 固定值 0xFE */
    u16 Length;         /* 消息总长度，包括帧头和校验码 */
    u8 MsgID;           /* 消息ID，用于区分消息类型 */
    u8 Payload[258];    /* 可变长度的数据内容，最大 258 字节 */
    u32 Crc32;          /* 4 字节校验码，用于验证消息完整性 */
};
#pragma pack()

/*##############################下行接收 ID##################################*/
#define IPC_MSG_EMERGESTOP_BUTTON_STATUS 0x81    /* 接收消息：急停按键状态 */
/*##############################下行接收 ID##################################*/

/*##############################上行指令 ID##################################*/
#define IPC_CMD_TAKEOVER_STATUS 0x80  /* 发送指令：夺权状态 */
/*##############################上行指令 ID##################################*/

/*##############################下行接收 消息结构定义##################################*/
struct IPC_MSG_EmergeStopButtonStatus{
    u8 buttonStatus; /* 按键状态: 0-抬起, 1-按下 */
};
/*##############################下行接收 消息结构定义##################################*/

/*##############################上行指令 消息结构定义##################################*/
struct IPC_CMD_TakeoverStatus{
    u8 takeoverStatus; /* 夺权状态: 0-未夺权, 1-已夺权 */
};
/*##############################上行指令 消息结构定义##################################*/



#endif // COMMON_INTERPROCESSCOMMUNICATION_H
